/**
 * <copyright>
 * </copyright>
 *
 */
package de.sabram.upb.specs.lido.util;

import de.sabram.upb.specs.lido.*;

import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EPackage;

import org.eclipse.emf.ecore.util.Switch;

/**
 * <!-- begin-user-doc -->
 * The <b>Switch</b> for the model's inheritance hierarchy.
 * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
 * to invoke the <code>caseXXX</code> method for each class of the model,
 * starting with the actual class of the object
 * and proceeding up the inheritance hierarchy
 * until a non-null result is returned,
 * which is the result of the switch.
 * <!-- end-user-doc -->
 * @see de.sabram.upb.specs.lido.LidoPackage
 * @generated
 */
public class LidoSwitch<T> extends Switch<T>
{
  /**
   * The cached model package
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected static LidoPackage modelPackage;

  /**
   * Creates an instance of the switch.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public LidoSwitch()
  {
    if (modelPackage == null)
    {
      modelPackage = LidoPackage.eINSTANCE;
    }
  }

  /**
   * Checks whether this is a switch for the given package.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @parameter ePackage the package in question.
   * @return whether this is a switch for the given package.
   * @generated
   */
  @Override
  protected boolean isSwitchFor(EPackage ePackage)
  {
    return ePackage == modelPackage;
  }

  /**
   * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @return the first non-null result returned by a <code>caseXXX</code> call.
   * @generated
   */
  @Override
  protected T doSwitch(int classifierID, EObject theEObject)
  {
    switch (classifierID)
    {
      case LidoPackage.ATTRIBUTE_GRAMMAR:
      {
        AttributeGrammar attributeGrammar = (AttributeGrammar)theEObject;
        T result = caseAttributeGrammar(attributeGrammar);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case LidoPackage.SPECIFICATIONS:
      {
        Specifications specifications = (Specifications)theEObject;
        T result = caseSpecifications(specifications);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case LidoPackage.SPECIFICATION:
      {
        Specification specification = (Specification)theEObject;
        T result = caseSpecification(specification);
        if (result == null) result = caseSpecifications(specification);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case LidoPackage.TERM_SPEC:
      {
        TermSpec termSpec = (TermSpec)theEObject;
        T result = caseTermSpec(termSpec);
        if (result == null) result = caseSpecification(termSpec);
        if (result == null) result = caseSpecifications(termSpec);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case LidoPackage.SYM_ATTR_SPEC:
      {
        SymAttrSpec symAttrSpec = (SymAttrSpec)theEObject;
        T result = caseSymAttrSpec(symAttrSpec);
        if (result == null) result = caseSpecification(symAttrSpec);
        if (result == null) result = caseSpecifications(symAttrSpec);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case LidoPackage.SYMBOL_DEF_IDS:
      {
        SymbolDefIds symbolDefIds = (SymbolDefIds)theEObject;
        T result = caseSymbolDefIds(symbolDefIds);
        if (result == null) result = caseTermSpec(symbolDefIds);
        if (result == null) result = caseSymAttrSpec(symbolDefIds);
        if (result == null) result = caseSpecification(symbolDefIds);
        if (result == null) result = caseSpecifications(symbolDefIds);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case LidoPackage.SYMBOL_DEF_ID:
      {
        SymbolDefId symbolDefId = (SymbolDefId)theEObject;
        T result = caseSymbolDefId(symbolDefId);
        if (result == null) result = caseSymCompSpec(symbolDefId);
        if (result == null) result = caseSpecification(symbolDefId);
        if (result == null) result = caseSpecifications(symbolDefId);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case LidoPackage.ATTR_DEFS_OPT:
      {
        AttrDefsOpt attrDefsOpt = (AttrDefsOpt)theEObject;
        T result = caseAttrDefsOpt(attrDefsOpt);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case LidoPackage.ATTR_DEFS:
      {
        AttrDefs attrDefs = (AttrDefs)theEObject;
        T result = caseAttrDefs(attrDefs);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case LidoPackage.ATTR_DEF:
      {
        AttrDef attrDef = (AttrDef)theEObject;
        T result = caseAttrDef(attrDef);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case LidoPackage.ATTR_DEF_IDS:
      {
        AttrDefIds attrDefIds = (AttrDefIds)theEObject;
        T result = caseAttrDefIds(attrDefIds);
        if (result == null) result = caseAttrDef(attrDefIds);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case LidoPackage.ATTR_DEF_ID:
      {
        AttrDefId attrDefId = (AttrDefId)theEObject;
        T result = caseAttrDefId(attrDefId);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case LidoPackage.TYPE_ID:
      {
        TypeId typeId = (TypeId)theEObject;
        T result = caseTypeId(typeId);
        if (result == null) result = caseExpandOpt(typeId);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case LidoPackage.ATTR_SPEC:
      {
        AttrSpec attrSpec = (AttrSpec)theEObject;
        T result = caseAttrSpec(attrSpec);
        if (result == null) result = caseSpecification(attrSpec);
        if (result == null) result = caseSpecifications(attrSpec);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case LidoPackage.ATTR_NAMES:
      {
        AttrNames attrNames = (AttrNames)theEObject;
        T result = caseAttrNames(attrNames);
        if (result == null) result = caseAttrSpec(attrNames);
        if (result == null) result = caseSpecification(attrNames);
        if (result == null) result = caseSpecifications(attrNames);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case LidoPackage.ATTR_NAME:
      {
        AttrName attrName = (AttrName)theEObject;
        T result = caseAttrName(attrName);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case LidoPackage.CHAIN_SPEC:
      {
        ChainSpec chainSpec = (ChainSpec)theEObject;
        T result = caseChainSpec(chainSpec);
        if (result == null) result = caseSpecification(chainSpec);
        if (result == null) result = caseSpecifications(chainSpec);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case LidoPackage.CHAIN_NAMES:
      {
        ChainNames chainNames = (ChainNames)theEObject;
        T result = caseChainNames(chainNames);
        if (result == null) result = caseChainSpec(chainNames);
        if (result == null) result = caseSpecification(chainNames);
        if (result == null) result = caseSpecifications(chainNames);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case LidoPackage.CHAIN_NAME:
      {
        ChainName chainName = (ChainName)theEObject;
        T result = caseChainName(chainName);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case LidoPackage.RULE_SPEC:
      {
        RuleSpec ruleSpec = (RuleSpec)theEObject;
        T result = caseRuleSpec(ruleSpec);
        if (result == null) result = caseSpecification(ruleSpec);
        if (result == null) result = caseSpecifications(ruleSpec);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case LidoPackage.RULE_SPEC_ID:
      {
        RuleSpecId ruleSpecId = (RuleSpecId)theEObject;
        T result = caseRuleSpecId(ruleSpecId);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case LidoPackage.RULE_ID:
      {
        RuleId ruleId = (RuleId)theEObject;
        T result = caseRuleId(ruleId);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case LidoPackage.PRODUCTION:
      {
        Production production = (Production)theEObject;
        T result = caseProduction(production);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case LidoPackage.ALTS:
      {
        Alts alts = (Alts)theEObject;
        T result = caseAlts(alts);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case LidoPackage.ALT:
      {
        Alt alt = (Alt)theEObject;
        T result = caseAlt(alt);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case LidoPackage.SYNT_UNITS:
      {
        SyntUnits syntUnits = (SyntUnits)theEObject;
        T result = caseSyntUnits(syntUnits);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case LidoPackage.SYNT_UNIT:
      {
        SyntUnit syntUnit = (SyntUnit)theEObject;
        T result = caseSyntUnit(syntUnit);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case LidoPackage.SYNT_LIT:
      {
        SyntLit syntLit = (SyntLit)theEObject;
        T result = caseSyntLit(syntLit);
        if (result == null) result = caseSyntUnit(syntLit);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case LidoPackage.SYNT_ID:
      {
        SyntId syntId = (SyntId)theEObject;
        T result = caseSyntId(syntId);
        if (result == null) result = caseProduction(syntId);
        if (result == null) result = caseSyntUnit(syntId);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case LidoPackage.COMP_PART:
      {
        CompPart compPart = (CompPart)theEObject;
        T result = caseCompPart(compPart);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case LidoPackage.COMPUTATIONS:
      {
        Computations computations = (Computations)theEObject;
        T result = caseComputations(computations);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case LidoPackage.COMPUTATION:
      {
        Computation computation = (Computation)theEObject;
        T result = caseComputation(computation);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case LidoPackage.COMPUTE:
      {
        Compute compute = (Compute)theEObject;
        T result = caseCompute(compute);
        if (result == null) result = caseComputation(compute);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case LidoPackage.PLAIN_COMP:
      {
        PlainComp plainComp = (PlainComp)theEObject;
        T result = casePlainComp(plainComp);
        if (result == null) result = caseCompute(plainComp);
        if (result == null) result = caseComputation(plainComp);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case LidoPackage.ATTR_COMP:
      {
        AttrComp attrComp = (AttrComp)theEObject;
        T result = caseAttrComp(attrComp);
        if (result == null) result = caseCompute(attrComp);
        if (result == null) result = caseComputation(attrComp);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case LidoPackage.DEF_ATTR:
      {
        DefAttr defAttr = (DefAttr)theEObject;
        T result = caseDefAttr(defAttr);
        if (result == null) result = caseAttrComp(defAttr);
        if (result == null) result = caseCompute(defAttr);
        if (result == null) result = caseComputation(defAttr);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case LidoPackage.ATTR:
      {
        Attr attr = (Attr)theEObject;
        T result = caseAttr(attr);
        if (result == null) result = caseDefAttr(attr);
        if (result == null) result = caseDepAttr(attr);
        if (result == null) result = caseAttrComp(attr);
        if (result == null) result = caseDependence(attr);
        if (result == null) result = caseCompute(attr);
        if (result == null) result = caseDepClause(attr);
        if (result == null) result = caseComputation(attr);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case LidoPackage.ATTR_USE_ID:
      {
        AttrUseId attrUseId = (AttrUseId)theEObject;
        T result = caseAttrUseId(attrUseId);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case LidoPackage.SYM_OCC:
      {
        SymOcc symOcc = (SymOcc)theEObject;
        T result = caseSymOcc(symOcc);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case LidoPackage.SYMBOL_ID:
      {
        SymbolId symbolId = (SymbolId)theEObject;
        T result = caseSymbolId(symbolId);
        if (result == null) result = caseRemoteAttr(symbolId);
        if (result == null) result = caseShieldSym(symbolId);
        if (result == null) result = caseInheritSym(symbolId);
        if (result == null) result = caseRemoteClause(symbolId);
        if (result == null) result = caseRemoteExpression(symbolId);
        if (result == null) result = caseDepAttr(symbolId);
        if (result == null) result = caseDependence(symbolId);
        if (result == null) result = caseDepClause(symbolId);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case LidoPackage.EXPRESSION_DEP:
      {
        ExpressionDep expressionDep = (ExpressionDep)theEObject;
        T result = caseExpressionDep(expressionDep);
        if (result == null) result = casePlainComp(expressionDep);
        if (result == null) result = caseParam(expressionDep);
        if (result == null) result = caseCompute(expressionDep);
        if (result == null) result = caseComputation(expressionDep);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case LidoPackage.EXPRESSION:
      {
        Expression expression = (Expression)theEObject;
        T result = caseExpression(expression);
        if (result == null) result = caseExpressionDep(expression);
        if (result == null) result = casePlainComp(expression);
        if (result == null) result = caseParam(expression);
        if (result == null) result = caseCompute(expression);
        if (result == null) result = caseComputation(expression);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case LidoPackage.SYMBOL_REF:
      {
        SymbolRef symbolRef = (SymbolRef)theEObject;
        T result = caseSymbolRef(symbolRef);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case LidoPackage.RHS_ATTRS:
      {
        RhsAttrs rhsAttrs = (RhsAttrs)theEObject;
        T result = caseRhsAttrs(rhsAttrs);
        if (result == null) result = caseDepAttr(rhsAttrs);
        if (result == null) result = caseDependence(rhsAttrs);
        if (result == null) result = caseDepClause(rhsAttrs);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case LidoPackage.DEP_CLAUSE:
      {
        DepClause depClause = (DepClause)theEObject;
        T result = caseDepClause(depClause);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case LidoPackage.DEPENDENCE:
      {
        Dependence dependence = (Dependence)theEObject;
        T result = caseDependence(dependence);
        if (result == null) result = caseDepClause(dependence);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case LidoPackage.DEP_ATTRS:
      {
        DepAttrs depAttrs = (DepAttrs)theEObject;
        T result = caseDepAttrs(depAttrs);
        if (result == null) result = caseDependence(depAttrs);
        if (result == null) result = caseDepClause(depAttrs);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case LidoPackage.DEP_ATTR:
      {
        DepAttr depAttr = (DepAttr)theEObject;
        T result = caseDepAttr(depAttr);
        if (result == null) result = caseDependence(depAttr);
        if (result == null) result = caseDepClause(depAttr);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case LidoPackage.PARAMS_OPT:
      {
        ParamsOpt paramsOpt = (ParamsOpt)theEObject;
        T result = caseParamsOpt(paramsOpt);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case LidoPackage.PARAMS:
      {
        Params params = (Params)theEObject;
        T result = caseParams(params);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case LidoPackage.PARAM:
      {
        Param param = (Param)theEObject;
        T result = caseParam(param);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case LidoPackage.LOOP:
      {
        Loop loop = (Loop)theEObject;
        T result = caseLoop(loop);
        if (result == null) result = casePlainComp(loop);
        if (result == null) result = caseCompute(loop);
        if (result == null) result = caseComputation(loop);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case LidoPackage.REMOTE_EXPRESSION:
      {
        RemoteExpression remoteExpression = (RemoteExpression)theEObject;
        T result = caseRemoteExpression(remoteExpression);
        if (result == null) result = caseDepAttr(remoteExpression);
        if (result == null) result = caseDependence(remoteExpression);
        if (result == null) result = caseDepClause(remoteExpression);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case LidoPackage.REMOTE_CLAUSE:
      {
        RemoteClause remoteClause = (RemoteClause)theEObject;
        T result = caseRemoteClause(remoteClause);
        if (result == null) result = caseRemoteExpression(remoteClause);
        if (result == null) result = caseDepAttr(remoteClause);
        if (result == null) result = caseDependence(remoteClause);
        if (result == null) result = caseDepClause(remoteClause);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case LidoPackage.REMOTE_ATTRS:
      {
        RemoteAttrs remoteAttrs = (RemoteAttrs)theEObject;
        T result = caseRemoteAttrs(remoteAttrs);
        if (result == null) result = caseRemoteClause(remoteAttrs);
        if (result == null) result = caseRemoteExpression(remoteAttrs);
        if (result == null) result = caseDepAttr(remoteAttrs);
        if (result == null) result = caseDependence(remoteAttrs);
        if (result == null) result = caseDepClause(remoteAttrs);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case LidoPackage.REMOTE_ATTR:
      {
        RemoteAttr remoteAttr = (RemoteAttr)theEObject;
        T result = caseRemoteAttr(remoteAttr);
        if (result == null) result = caseRemoteClause(remoteAttr);
        if (result == null) result = caseRemoteExpression(remoteAttr);
        if (result == null) result = caseDepAttr(remoteAttr);
        if (result == null) result = caseDependence(remoteAttr);
        if (result == null) result = caseDepClause(remoteAttr);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case LidoPackage.EXPAND_OPT:
      {
        ExpandOpt expandOpt = (ExpandOpt)theEObject;
        T result = caseExpandOpt(expandOpt);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case LidoPackage.SUBTREE:
      {
        Subtree subtree = (Subtree)theEObject;
        T result = caseSubtree(subtree);
        if (result == null) result = caseRemoteExpression(subtree);
        if (result == null) result = caseDepAttr(subtree);
        if (result == null) result = caseDependence(subtree);
        if (result == null) result = caseDepClause(subtree);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case LidoPackage.SHIELD:
      {
        Shield shield = (Shield)theEObject;
        T result = caseShield(shield);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case LidoPackage.SHIELD_CLAUSE:
      {
        ShieldClause shieldClause = (ShieldClause)theEObject;
        T result = caseShieldClause(shieldClause);
        if (result == null) result = caseShield(shieldClause);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case LidoPackage.SHIELD_SYMS:
      {
        ShieldSyms shieldSyms = (ShieldSyms)theEObject;
        T result = caseShieldSyms(shieldSyms);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case LidoPackage.SHIELD_SYM:
      {
        ShieldSym shieldSym = (ShieldSym)theEObject;
        T result = caseShieldSym(shieldSym);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case LidoPackage.SYM_COMP_SPEC:
      {
        SymCompSpec symCompSpec = (SymCompSpec)theEObject;
        T result = caseSymCompSpec(symCompSpec);
        if (result == null) result = caseSpecification(symCompSpec);
        if (result == null) result = caseSpecifications(symCompSpec);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case LidoPackage.INHERIT_OPT:
      {
        InheritOpt inheritOpt = (InheritOpt)theEObject;
        T result = caseInheritOpt(inheritOpt);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case LidoPackage.INHERIT_SYMS:
      {
        InheritSyms inheritSyms = (InheritSyms)theEObject;
        T result = caseInheritSyms(inheritSyms);
        if (result == null) result = caseInheritOpt(inheritSyms);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case LidoPackage.INHERIT_SYM:
      {
        InheritSym inheritSym = (InheritSym)theEObject;
        T result = caseInheritSym(inheritSym);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      default: return defaultCase(theEObject);
    }
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Attribute Grammar</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Attribute Grammar</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseAttributeGrammar(AttributeGrammar object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Specifications</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Specifications</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseSpecifications(Specifications object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Specification</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Specification</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseSpecification(Specification object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Term Spec</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Term Spec</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseTermSpec(TermSpec object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Sym Attr Spec</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Sym Attr Spec</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseSymAttrSpec(SymAttrSpec object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Symbol Def Ids</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Symbol Def Ids</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseSymbolDefIds(SymbolDefIds object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Symbol Def Id</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Symbol Def Id</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseSymbolDefId(SymbolDefId object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Attr Defs Opt</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Attr Defs Opt</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseAttrDefsOpt(AttrDefsOpt object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Attr Defs</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Attr Defs</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseAttrDefs(AttrDefs object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Attr Def</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Attr Def</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseAttrDef(AttrDef object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Attr Def Ids</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Attr Def Ids</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseAttrDefIds(AttrDefIds object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Attr Def Id</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Attr Def Id</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseAttrDefId(AttrDefId object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Type Id</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Type Id</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseTypeId(TypeId object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Attr Spec</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Attr Spec</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseAttrSpec(AttrSpec object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Attr Names</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Attr Names</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseAttrNames(AttrNames object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Attr Name</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Attr Name</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseAttrName(AttrName object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Chain Spec</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Chain Spec</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseChainSpec(ChainSpec object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Chain Names</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Chain Names</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseChainNames(ChainNames object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Chain Name</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Chain Name</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseChainName(ChainName object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Rule Spec</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Rule Spec</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseRuleSpec(RuleSpec object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Rule Spec Id</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Rule Spec Id</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseRuleSpecId(RuleSpecId object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Rule Id</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Rule Id</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseRuleId(RuleId object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Production</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Production</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseProduction(Production object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Alts</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Alts</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseAlts(Alts object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Alt</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Alt</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseAlt(Alt object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Synt Units</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Synt Units</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseSyntUnits(SyntUnits object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Synt Unit</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Synt Unit</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseSyntUnit(SyntUnit object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Synt Lit</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Synt Lit</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseSyntLit(SyntLit object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Synt Id</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Synt Id</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseSyntId(SyntId object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Comp Part</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Comp Part</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseCompPart(CompPart object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Computations</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Computations</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseComputations(Computations object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Computation</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Computation</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseComputation(Computation object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Compute</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Compute</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseCompute(Compute object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Plain Comp</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Plain Comp</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T casePlainComp(PlainComp object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Attr Comp</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Attr Comp</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseAttrComp(AttrComp object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Def Attr</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Def Attr</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseDefAttr(DefAttr object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Attr</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Attr</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseAttr(Attr object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Attr Use Id</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Attr Use Id</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseAttrUseId(AttrUseId object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Sym Occ</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Sym Occ</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseSymOcc(SymOcc object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Symbol Id</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Symbol Id</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseSymbolId(SymbolId object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Expression Dep</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Expression Dep</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseExpressionDep(ExpressionDep object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Expression</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Expression</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseExpression(Expression object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Symbol Ref</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Symbol Ref</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseSymbolRef(SymbolRef object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Rhs Attrs</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Rhs Attrs</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseRhsAttrs(RhsAttrs object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Dep Clause</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Dep Clause</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseDepClause(DepClause object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Dependence</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Dependence</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseDependence(Dependence object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Dep Attrs</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Dep Attrs</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseDepAttrs(DepAttrs object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Dep Attr</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Dep Attr</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseDepAttr(DepAttr object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Params Opt</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Params Opt</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseParamsOpt(ParamsOpt object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Params</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Params</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseParams(Params object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Param</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Param</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseParam(Param object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Loop</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Loop</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseLoop(Loop object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Remote Expression</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Remote Expression</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseRemoteExpression(RemoteExpression object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Remote Clause</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Remote Clause</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseRemoteClause(RemoteClause object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Remote Attrs</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Remote Attrs</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseRemoteAttrs(RemoteAttrs object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Remote Attr</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Remote Attr</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseRemoteAttr(RemoteAttr object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Expand Opt</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Expand Opt</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseExpandOpt(ExpandOpt object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Subtree</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Subtree</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseSubtree(Subtree object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Shield</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Shield</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseShield(Shield object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Shield Clause</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Shield Clause</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseShieldClause(ShieldClause object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Shield Syms</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Shield Syms</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseShieldSyms(ShieldSyms object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Shield Sym</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Shield Sym</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseShieldSym(ShieldSym object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Sym Comp Spec</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Sym Comp Spec</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseSymCompSpec(SymCompSpec object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Inherit Opt</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Inherit Opt</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseInheritOpt(InheritOpt object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Inherit Syms</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Inherit Syms</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseInheritSyms(InheritSyms object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Inherit Sym</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Inherit Sym</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseInheritSym(InheritSym object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch, but this is the last case anyway.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject)
   * @generated
   */
  @Override
  public T defaultCase(EObject object)
  {
    return null;
  }

} //LidoSwitch
